/**
 * Trabajo de Ingeniería de Software 2
 * Año 2008
 * Sistema de Reserva de Recursos.
 * Desarrolladores: - Marcelo Ferreira.
 *                  - Christian Gómez.
 *                  - Marcelo Rodas.
 */
package modelo;

import java.io.Serializable;
import java.util.Collection;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 * Clase Entidad Estadosolicitud (JPA)
 * @author jmferreira
 */
@Entity
@Table(name = "estadosolicitud")
@NamedQueries({@NamedQuery(name = "Estadosolicitud.findByIdEstadoSolicitud", query = "SELECT e FROM Estadosolicitud e WHERE e.idEstadoSolicitud = :idEstadoSolicitud"), @NamedQuery(name = "Estadosolicitud.findByDescripcionEstadoSolicitud", query = "SELECT e FROM Estadosolicitud e WHERE e.descripcionEstadoSolicitud = :descripcionEstadoSolicitud")})
public class Estadosolicitud implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @Column(name = "idEstadoSolicitud", nullable = false)
    private Integer idEstadoSolicitud;
    @Column(name = "descripcionEstadoSolicitud", nullable = false)
    private String descripcionEstadoSolicitud;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idEstadoSolicitud")
    private Collection<Solicitudreserva> solicitudreservaCollection;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idEstadoSolicitud")
    private Collection<Solicitudusuario> solicitudusuarioCollection;

    /**
     * Crea una nueva instancia de Estadosolicitud 
     */
    public Estadosolicitud() {
    }

    /**
     * Crea una nueva instancia de Estadosolicitud con valores especificos
     * @param idEstadoSolicitud El idEstadoSolicitud de Estadosolicitud
     */
    public Estadosolicitud(Integer idEstadoSolicitud) {
        this.idEstadoSolicitud = idEstadoSolicitud;
    }

    /**
     * Crea una nueva instancia de Estadosolicitud con valores especificos
     * @param idEstadoSolicitud El idEstadoSolicitud de Estadosolicitud
     * @param descripcionEstadoSolicitud La descripcionEstadoSolicitud de Estadosolicitud
     */
    public Estadosolicitud(Integer idEstadoSolicitud, String descripcionEstadoSolicitud) {
        this.idEstadoSolicitud = idEstadoSolicitud;
        this.descripcionEstadoSolicitud = descripcionEstadoSolicitud;
    }

    /**
     * Obtiene el idEstadoSolicitud de EstadoSolicitud
     * @return El idEstadoSolicitud de EstadoSolicitud
     */
    public Integer getIdEstadoSolicitud() {
        return idEstadoSolicitud;
    }

    /**
     * Fija el idEstadoSolicitud de EstadoSolicitud al valor especificado
     * @param idEstadoSolicitud El idEstadoSolicitud de EstadoSolicitud
     */
    public void setIdEstadoSolicitud(Integer idEstadoSolicitud) {
        this.idEstadoSolicitud = idEstadoSolicitud;
    }

    /**
     * Obtiene la descripcionEstadoSolicitud de EstadoSolicitud
     * @return La descripcionEstadoSolicitud de EstadoSolicitud
     */
    public String getDescripcionEstadoSolicitud() {
        return descripcionEstadoSolicitud;
    }

    /**
     * Fija la descripcionEstadoSolicitud de EstadoSolicitud al valor especificado
     * @param descripcionEstadoSolicitud La descripcionEstadoSolicitud de EstadoSolicitud
     */
    public void setDescripcionEstadoSolicitud(String descripcionEstadoSolicitud) {
        this.descripcionEstadoSolicitud = descripcionEstadoSolicitud;
    }

    /**
     * Obtiene una solicitudreservaCollection de EstadoSolicitud
     * @return La solicitudreservaCollection de EstadoSolicitud
     */
    public Collection<Solicitudreserva> getSolicitudreservaCollection() {
        return solicitudreservaCollection;
    }

    /**
     * Fija una solicitudreservaCollection de EstadoSolicitud al valor especificado
     * @param solicitudreservaCollection La solicitudreservaCollection de EstadoSolicitud
     */
    public void setSolicitudreservaCollection(Collection<Solicitudreserva> solicitudreservaCollection) {
        this.solicitudreservaCollection = solicitudreservaCollection;
    }

    /**
     * Obtiene una solicitudreservaCollection de EstadoSolicitud
     * @return La solicitudreservaCollection de EstadoSolicitud
     */
    public Collection<Solicitudusuario> getSolicitudusuarioCollection() {
        return solicitudusuarioCollection;
    }

    /**
     * Fija una solicitudusuarioCollection de EstadoSolicitud al valor especificado
     * @param solicitudusuarioCollection La solicitudusuarioCollection de EstadoSolicitud
     */
    public void setSolicitudusuarioCollection(Collection<Solicitudusuario> solicitudusuarioCollection) {
        this.solicitudusuarioCollection = solicitudusuarioCollection;
    }

    /**
     * Retorna un valor de Hash para el objeto.
     * Esta implementacion evalua un valor hash basado sobre los campos id en este objeto
     * @return Un valor de hash para este objeto
     */
    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idEstadoSolicitud != null ? idEstadoSolicitud.hashCode() : 0);
        return hash;
    }

    /**
     * Determina si otro objeto es igual a Estadosolicitud. El resultado es
     * <code>true</code> si y solo si el argumento no es nulo y es un objeto Estadosolicitud
     * que tiene el mismo valor del campo id en este objeto.
     * @param object La referencia objeto con el cual comparar
     * @return <code>true</code> Si este objeto es la misma que su argumento;
     * <code>false</code> si no lo es.
     */
    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Estadosolicitud)) {
            return false;
        }
        Estadosolicitud other = (Estadosolicitud) object;
        if ((this.idEstadoSolicitud == null && other.idEstadoSolicitud != null) || (this.idEstadoSolicitud != null && !this.idEstadoSolicitud.equals(other.idEstadoSolicitud))) {
            return false;
        }
        return true;
    }

    /**
     * Retorna una representacion String de este objeto.  Esta implementacion This implementation construye
     * la representacion basada en los campos id.
     * @return Una representacion String del objeto.
     */
    @Override
    public String toString() {
        return idEstadoSolicitud + "[" + this.getDescripcionEstadoSolicitud() + "]";
    }
}
